<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/html" xmlns="http://www.w3.org/1999/html">
<head>
    <title>brian dang | portfolio</title>

    <!-- Style Sheets -->
    <link rel="stylesheet" type="text/css" href="css/style.css">
    <link href="css/lightbox.css" rel="stylesheet" />
    <link href="css/colorbox.css" rel="stylesheet" />

    <!-- ColorBox JS - for Videos -->
    <script src="colorbox-master/jquery.colorbox.js"></script>

    <!-- Highlight JS -->
    <link rel="stylesheet" href="highlight.js/styles/default.css">
    <script src="highlight.js/highlight.pack.js"></script>
    <script>hljs.initHighlightingOnLoad();</script>

    <!-- JQUERY -->
    <script src="js/jquery-1.9.1.js"></script>
    <script src="js/jquery-1.9.1.min.js"></script>
    <script src="js/jquery-1.7.2.min.js"></script>
    <script src="js/main.js"></script>
    <script src="js/jquery.flip.js"></script>
    <script src="js/jquery.flip.min.js"></script>

    <!-- LightBox -->
    <script src="js/lightbox.js"></script>

    <!-- Google Fonts -->
    <link href='http://fonts.googleapis.com/css?family=Roboto' rel='stylesheet' type='text/css'>

    <script>
    $(document).ready(function(){
        $("#rightAbout").css("display","visible");

        //Examples of how to assign the ColorBox event to elements
        $(".youtube").colorbox({iframe:true, innerWidth:800, innerHeight:480});
    });
    </script>
</head>
<body onload="initialize()">

    <div id="logo">
        <img src="images/icon_128.png"/>
    </div>
    <div id="header">
        <ul>
            <li onclick="pageAbout()">about</li>
            <li onclick="pageProjects()">projects</li>
            <li onclick="pageWork()">work</li>
            <li onclick="pageEducation()">education</li>
            <li onclick="pageCode()">topcoder</li>
            <li onclick="pageContact()">contact</li>
        </ul>
    </div>
    <div id="mainBody">
        <div id="left">
            <br><br><br>
            <ul>
                <li onclick="pageAbout()">about</li>
                <li onclick="pageProjects()">projects</li>
                <li onclick="pageWork()">work</li>
                <li onclick="pageEducation()">education</li>
                <li onclick="pageCode()">topcoder</li>
                <li onclick="pageContact()">contact</li>
            </ul>
        </div>
        <div id="rightAbout">
            <div id="text">


                <h1>About</h1>
                <p><img src="images/bd_pic.jpg" />Hi everyone, thanks for stopping by and checking out my website!<br><br>

                My name is Brian Dang and I am a Software Engineer. I currently work in Research and Development at Samsung Information Systems America. Prior to Samsung, I worked at Northrop Grumman for roughly 4 years with an emphasis in embedded software development. Before that, I also worked at Western Digital for roughly 1 year. I graduated from UC Irvine with a B.S. in Computer Science and shortly after I studied and got an M.S. in Computer Science at the University of Southern California.<br><br>

                I've recently been working on getting better with front-end development, learning as much as I can with HTML5, CSS, and JavaScript! My interests are: game development, search engine optimization, robotics, computer graphics, and algorithms (face recognition, voice recognition, gesture recognition, and eye tracking).<br><br>

                Once in awhile, I enjoy competing in TopCoder programming competitions. I think it's a good way to be prepared for programming assignments (including the professional setting) because of the diversity in problems.<br><br></p>

                Thanks<br>Brian
            </div>
        </div>
        <div id="rightProjects">
            <h1>Projects</h1><br>

            <!--<a class="youtube" href="http://www.youtube.com/embed/i6j2yT2EogQ?rel=0&wmode=opaque" rel="lightbox" title="Networked Game Design: Blinker">
            -->
            <a class='youtube' href="http://www.youtube.com/embed/z0gcgnAqpIA?rel=0&amp;autoplay=1&amp;wmode=opaque&amp;showinfo=0&amp;autohide=1&amp;rel=0&amp;iv_load_policy=1" title="Test">
                <div class="project">
                    <h1>Networked Game Design: Blinker</h1>
                    <h2>September 2011 - December 2011</h2>
                    <p>Lead a group of three to design and implement a networked cross platform FPS game using the Unity 3D game engine. Platforms include: Windows, Mac OS & Web</p>
                </div>
            </a>

            <div class="project">
                <h1>HTML5 3D Graphics Rendering Library</h1>
                <h2>January 2012 - May 2012</h2>
                <p>Designed and built a 3D Rendering library from scratch using JavaScript. Used HTML5's canvas for rendering. Implemented reflection mapping, non-photorealistic rendering, and bump mapping algorithms.</p>
            </div>

            <div class="project">
                <h1>Mobile Game Design: Archery Master</h1>
                <h2>September 2011 - December 2011</h2>
                <p>Designed and implemented a 3D mobile game (IOS & Android) in C# and JavaScript using the Unity 3D game engine. 3D Modeling & Character Animation was done using Maya.</p>
            </div>

            <div class="project">
                <h1>Networked Artificial Intelligence: Dark Illusion</h1>
                <h2>January 2012 - May 2012</h2>
                <p>Designed and implemented a networked game using the Unreal UDK game engine. Focused on game play, artificial intelligence, level and character design, and computer networking.</p>
            </div>

            <div class="project">
                <h1>Robotics</h1>
                <h2>August 2010 - December 2010</h2>
                <p>Designed and built an autonomous robot consisting of gears, motors, actuators, sensors, a compass, and a camera. Capable of navigating through an environment to transport objects using a particle filter to localize itself and image segmentation to track/follow an object. Implemented a PID control algorithm to allow the robot to gracefully follow a wall using an infrared sensor.</p>
            </div>

            <div class="project">
                <h1>Web Development and Databases</h1>
                <h2>May 2011 - June 2011</h2>
                <p>Designed and developed a website to allow users to browse, add, and purchase electronic products using PHP, JavaScript, AJAX, and CSS. Login authentication, an employee management system, and a customer shopping cart feature were included. Designed a relational database and implemented this in MySQL for product related data.</p>
            </div>

            <div class="project">
                <h1>Information Retrieval: Web Crawler and Search Engine</h1>
                <h2>December 2008 - March 2009</h2>
                <p>Developed a java-based web crawler capable of crawling Wikipedia in order to analyze textual content such as finding the longest rhopalics, lipograms, and palindromes. Implemented a Wikipedia search engine capable of ranking the results of a multi-word query using a postings list for scoring and term weighting.</p>
            </div>

            <div class="project">
                <h1>Compilers and Interpreters</h1>
                <h2>September 2007 - December 2007</h2>
                <p>Implemented a compiler in C# through lexical/syntax analysis, type checking, and code generation. Generated the scanner, parser, and interpreter for an arbitrary language through a predefined EBNF.</p>
            </div>

            <div class="project">
                <h1>Height Field Generator</h1>
                <h2>January 2011 - May 2011</h2>
                <p>Implemented a height field generator which is capable of generating a 3 dimensional mesh from a 2 dimensional raster image. Written in C and rendered using OpenGL.</p>
            </div>

            <div class="project">
                <h1>Roller Coaster Simulation</h1>
                <h2>January 2011 - May 2011</h2>
                <p>Implemented a 3D roller coaster simulator from scratch. Incorporated a spline function (Catmull-Rom). Utilized OpenGL to include lighting, shading, texture mapping, and camera manipulations in order to implement the ability to ride the roller coaster.</p>
            </div>

            <div class="project">
                <h1>Ray Tracer</h1>
                <h2>January 2011</h2>
                <p>Implemented a ray tracer using Phong shading to determine the color of a point with respect to each light source. Capable of calculating triangle/sphere intersections, triangle/sphere Phong shading, and shadow rays. Diffuse, specular, and shininess color properties were incorporated.</p>
            </div>

            <div class="project">
                <h1>Text Compression</h1>
                <h2>March 2009 - June 2009</h2>
                <p>Developed a text compression application using Huffman Coding and the Lempel-Ziv compression algorithm to encode/decode compressed and uncompressed files.</p>
            </div>

        </div>
        <div id="rightWork">
            <h1>Work</h1>

            <div class="job">
                <h1>Samsung Information Systems America<img src="images/Samsung_200.jpg" /></h1>
                <h2>Software Engineer</h2>
                <h3>February 2013 - Present</h3>
                <ul>
                    <li>Platform: The Platform Team is responsible for various aspects of emerging and future TV technologies. We are involved in the design and development of new methods of human interaction with the TV, including AI and context-aware environments. In addition, we work closely with content providers and distributors to launch interactive applications on the Samsung app store.</li>
                    <li>Algorithms: Research and development efforts strongly focus on algorithms and applications of image and video processing including facial recognition, gesture recognition, voice recognition and recommendation systems.</li>
                </ul>
            </div>

            <div class="job">
                <h1>Northrop Grumman Aerospace Systems<img src="images/Northrop_200.jpg" /></h1>
                <h2>Software Engineer</h2>
                <h3>July 2009 - February 2013</h3>
                <ul>
                    <li>Development for preliminary design and coding for the attitude control subsystem including actuator processing, attitude determination, executive scheduling, fault and hardware management, mode processing, sensor processing, etc.</li>
                    <li>Development included collaborating with ACS engineers and translating algorithms written in MATLAB into C code.</li>
                    <li>Designed and generated nominal and off-nominal unit testing for Flight Software code.</li>
                    <li>Produced batch and environment scripts to support regression testing for updated code changes.</li>
                    <li>Generated metric reports to analyze code coverage of unit tests through VectorCAST which included results for function, statement, decision, and conditional code coverage.</li>
                    <li>Optimized build releases through a Make File which automated the process of running multiple tools.</li>
                    <li>Developed a Symbol Table tool written in C++ used by both Flight Software and Firmware engineers which recursively parses through source code and a linker file to extract variable specific data.</li>
                    <li>Implemented a tool written in Java to extract data from 1553 transaction tables to be outputted in XML using an XML schema. Served as input to specialized software to evaluate timing/performance.</li>
                    <li>Created a RAM/EEPROM tool written in C++ for Flight Software and Firmware teams to parse through binary images and output files in a specialized hex format.</li>
                    <li>Produced a script written in Python to extract data values of specific variables from a binary image.</li>
                    <li>Developed a region specific checksum utility to be used on monthly flight software releases.</li>
                    <li>Implemented a series of database scripts written in C# and VBA to translate excel spreadsheets that contain data values in order to generate compile-able C initialization code.</li>
                    <li>Implemented a tool to convert MATLAB unit tests into text files which served as input for VectorCAST C unit tests. This improved productivity for the team and helped reach pressing deadlines.</li>
                </ul>
            </div>

            <div class="job">
                <h1>Western Digital Corporation<img src="images/Western_200.gif" /></h1>
                <h2>Software Engineer</h2>
                <h3>June 2008 - July 2009</h3>
                <ul>
                    <li>Development with "Jaws", a java-based platform for interactive and automated drive access used by quality assurance engineers to validate hard drive integrity.</li>
                    <li>Implemented the graphical user interface for the DRM Log Analyzer tool using Java's Swing API.</li>
                    <li>Web development using a Model View Controller architecture on the internal Products Status website using ASP .NET, C#, Yahoo's User Interface API, PL/SQL, and Adobe Flex.</li>
                    <li>Generated structured XML files in order to conveniently analyze hard drive log data.</li>
                </ul>
            </div>

            <div class="job">
                <h1>Cold Stone Creamery<img src="images/cold_200.jpg"/></h1>
                <h2>Lead Cashier</h2>
                <h3>June 2003 - November 2003</h3>
                <ul>
                    <li>Processed cash and credit transactions, conducted cash drawer verification.</li>
                    <li>Trained co-workers on cash register operation and product knowledge.</li>
                </ul>
            </div>
        </div>
        <div id="rightEducation">
            <h1>Education</h1>
            <br><br>
            <div class="school">
                <div class="left">
                    <img src="images/usc_crop.jpg" />
                </div>
                <div class="right">
                    <h1>University of Southern California</h1>
                    <h2>Master of Science (M.S.), Computer Science</h2>
                    <h3>September 2010 - May 2012</h3>
                </div>
            </div>

            <div class="school">
                <div class="left">
                    <img src="images/uci_crop.jpg"/>
                </div>
                <div class="right">
                    <h1>University of California Irvine</h1>
                    <h2>Bachelor of Science (B.S.), Computer Science</h2>
                    <h3>September 2005 - June 2009</h3>
                </div>
            </div>
        </div>
        <div id="rightCode">
            <h1>TopCoder</h1>
            <pre><code>
/*
    SRM 557 - DIV 2 - PROBLEM #1

    You are a wizard. You are facing N fairies.
    Your goal is to defeat all of them. You can only attack one fairy at a time.
    Moreover, you must fight the fairies in order: you can only attack fairy X+1 after you defeat fairy X.
    On the other hand, all fairies that have not been defeated yet will attack you all the time.

    Each fairy has two characteristics: her damage per second (dps) and her amount of hit points.
    Your damage per second is 1.
    That is, you are able to reduce an opponent's hit points by 1 each second.
    In other words, if a fairy has H hit points, it takes you H seconds to defeat her.

    You are given two int[]s, each of length N: dps and hp.
    For each i, dps[i] is the damage per second of fairy i, and hp[i] is her initial amount of hit points.

    We assume that your number of hit points is sufficiently large to avoid defeat when
    fighting the fairies. Compute and return the total number of hit points you'll lose during the fight.
    In other words, return the total amount of damage the attacking fairies will deal.
*/

#ifndef _GREAT_FAIRY_WAR_
#define _GREAT_FAIRY_WAR_

#include <iostream>
#include <string>
using namespace std;

class GreatFairyWar{
    public:
    int minHP(int* dps, int* hp, unsigned int len)
    {
        int totalDmgTaken = 0;
        unsigned int deadFairies = 0;

        for(unsigned int i=0; i < len; i++) // iterate through each fairy
        {
            for(int j=0; j < hp[i]; j++) // for this fairy, iterate through each hit point
            {
                for(unsigned int k=deadFairies; k < len; k++) // start at the first fairy that isn't dead
                {
                    totalDmgTaken = totalDmgTaken + dps[k];
                }
            }

            deadFairies++; // keep track of how many fairies have died
        }

        return totalDmgTaken;
    };
};

void GreatFairyWar_TestCase1()
{
    GreatFairyWar* gfw = new GreatFairyWar();
    int dps[10] = {30,2,7,4,7,8,21,14,19,12};
    int hp[10] = {2,27,18,19,14,8,25,13,21,30};
    cout << "The total dmg is " << gfw->minHP(dps,hp,10) << endl;
}

#endif
            </code></pre>
        </div>
        <div id="rightContact">
            <h1>Contact</h1>

            <p>I would love to network.<br><br>Please feel free to send a message and add me on    <strong><a href="http://www.linkedin.com">LinkedIn</a></strong></p>

        </div>
    </div>

</body>
</html>